home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 7 / FM Towns Free Software Collection 7.iso / taropyon / install / hewin.cci < prev    next >
Text File  |  1993-11-30  |  7KB  |  247 lines

  1. /*************************************************************************
  2. *    HEwin install
  3. *************************************************************************/
  4.  
  5. char    *HewinMsg[8] =
  6. {
  7.     "HEwin は,テキストエディタ,通信機能,DOS コンソール,TIFFビュワー",
  8.     "等を備えたマルチウィンドゥ環境で動作するアプリケーションです。",
  9.     "※  メモリ:要4Mバイト(推奨6~10Mバイト以上)",
  10.     "",
  11.     " ディスク容量の関係から、フロッピィディスクにはすべてのファイルは ",
  12.     " 複写できません(必要最小限のファイルのみが複写されます)。",
  13.     NULL
  14. };
  15.  
  16. char    *HewinFile1[12] =            /* インストールするファイル    */
  17. {
  18.     "hewin.exp",            /* 最初は必ず実行プログラムを置く    */
  19.     "*.dll",
  20.     "hewin.cci",
  21.     "hewin.icn",
  22.     "hewin.tif",
  23.     "tdptmp.tbl",
  24.     "*.doc",
  25.     "*.hlp",
  26.     NULL
  27. };
  28.  
  29. char    *HewinFile2[8] =        /* インストールするファイル(EXP)    */
  30. {
  31. /*    "lhx.exp",    */
  32.     "cci.exp",
  33.     "rz.exp",
  34.     "sz.exp",
  35.     NULL
  36. };
  37.  
  38. char    *HewinFile3[5] =        /* インストールするファイル(CCI)    */
  39. {
  40.     "makecci.bat",
  41.     "cpp.exe",
  42.     "*.h",
  43.     "*.cci",
  44.     NULL
  45. };
  46.  
  47. /*************************************************************************
  48. *    インストール
  49. *************************************************************************/
  50.  
  51. int        hewin_install()
  52. {
  53.     int                i, ret, len;
  54.     char            *btn;
  55.     char            *fdl;
  56.     int                drv;
  57.     unsigned int    totalFree, writeFree;
  58.     char            *p, tmp[256], path[256], ccipath[256], whare[256], prog[256];
  59.     short            frm[4];
  60.     char            *aplname, *dirname, *srcdir;
  61.  
  62.     aplname = "HEwin";
  63.     dirname = "HEWIN";
  64.     srcdir  = " :/TAROPYON/HEWIN/";
  65.     srcdir[0] = StartPath[0];
  66.  
  67.     dsp_init(HewinMsg);
  68.  
  69. _RETRY:
  70.     DSP_writePage(1);
  71.     btn = MNU_allocBtn( 2 );
  72.     MNU_setBtn( btn, 0, '\r'  , KA_EXEC  , 1, "INSTALL : [実行]" );
  73.     MNU_setBtn( btn, 1, '\x1B', KA_CANCEL, 2, "CANECEL : [取消]" );
  74.     ret = MNU_selectBtn( DlgX0, DlgY0,
  75.         C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_LEFT, 2, btn,
  76.         "    %s のインストールを行いますか?  ", aplname );
  77.     MNU_freeBtn( btn );
  78.     if ( ret != 1 )
  79.         return (0);
  80.  
  81.     DLG_tmpMsgTime( DlgX0, DlgY0, 
  82.         C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
  83.         3, "\n    インストール先に移動してください。  \n" );
  84.  
  85.     /* インストール    */
  86.     if ( (fdl = FDL_open(0)) == NULL )
  87.         return (-1);
  88.     FDL_set_title( fdl,"インストール先指定");
  89.     FDL_set_wildcard( fdl, "*.*");
  90.     ret = FDL_start(fdl);
  91.     if ( ret == NORMAL )
  92.     {
  93.         drv = FDL_get_drv(fdl);
  94.         strcpy( whare, FDL_get_whare(fdl) );
  95.     }
  96.     FDL_close(fdl);
  97.     if ( ret )
  98.         goto _RETRY;
  99.  
  100.     /* ディスク容量のチェック    ----------------------------------------*/
  101.     if ( FS_getDskFree( drv, &totalFree, &writeFree) )
  102.     {
  103.         DLG_tmpMsgTime( DlgX0, DlgY0,
  104.             C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY),
  105.             3, "    ディスクの準備ができていません。  " );
  106.         goto _RETRY;
  107.     }
  108.     if ( writeFree < 1167*1024 || (drv > 1 && writeFree < 3*1024*1024) )
  109.     {
  110.         ret = MNU_sure( DlgX0, DlgY0,
  111.             C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY), SELBTN_ATT_CENTER,
  112.             "  %c: Disk free space %u [%s] byte(s)  \n    ディスク容量が足りません。  ",
  113.             drv + 'A', writeFree, getSizMsg(NULL,writeFree) );
  114.         if ( ret != MENU_SURE_OK )
  115.             goto _RETRY;
  116.     }
  117.  
  118.     sprintf( tmp, "%c:/%s", drv+'A', whare );
  119.     len = strlen(tmp);
  120.     if ( len > 0 && tmp[len-1] != '/' && tmp[len-1] != '\\' )
  121.     {
  122.         tmp[len++] = '/';
  123.         tmp[len]   = '\0';
  124.     }
  125.     sprintf( path, "%s%s", tmp, dirname );
  126.  
  127.     ret = FS_isFileExist(path);
  128.     if ( ret == 0 )
  129.     {    /* ファイルは存在しない    */
  130.         /* ディレクトリ作成確認    */
  131.         btn = MNU_allocBtn( 2 );
  132.         MNU_setBtn( btn, 0, '\r'  , KA_EXEC  , 1, "MKDIR : [実行]" );
  133.         MNU_setBtn( btn, 1, '\x1B', KA_CANCEL, 2, "CANECEL : [取消]" );
  134.         ret = MNU_selectBtn( DlgX0, DlgY0,
  135.             C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_CENTER, 2, btn,
  136.             "    インストール先にディレクトリを作成します。  \n%s", path );
  137.         MNU_freeBtn( btn );
  138.         if ( ret != 1 )
  139.             goto _RETRY;
  140.         FS_mkdir(path);
  141.     } else if ( ret == 1 )
  142.     {    /* ファイルが存在    */
  143.         MNU_sure( DlgX0, DlgY0,
  144.             C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY), SELBTN_ATT_CENTER,
  145.             "    %s    \n    インストール先に同名のファイルが存在しています。  ", path );
  146.         goto _RETRY;
  147.     }
  148.  
  149.     /* インストール先確認    --------------------------------------------*/
  150.     btn = MNU_allocBtn( 2 );
  151.     MNU_setBtn( btn, 0, '\r'  , KA_EXEC  , 1, "INSTALL : [実行]" );
  152.     MNU_setBtn( btn, 1, '\x1B', KA_CANCEL, 2, "CANECEL : [取消]" );
  153.     ret = MNU_selectBtn( DlgX0, DlgY0,
  154.         C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_CENTER, 2, btn,
  155.         "インストール先 : %s\n  Disk free space %u [%s] byte(s)  \n\n    インストールを行いますか?  ",
  156.         path, writeFree, getSizMsg(NULL,writeFree) );
  157.     MNU_freeBtn( btn );
  158.     if ( ret != 1 )
  159.         goto _RETRY;
  160.  
  161.     /* 複写元にカレントを移動    */
  162.     sprintf( tmp, "%s.", srcdir );
  163.     FS_chdrv( toupper(srcdir[0]) - 'A' );
  164.     FS_chdir( tmp );
  165.  
  166.     /* 本体及び関連ファイル    */
  167.     ret = i = 0;
  168.     while ( (p = HewinFile1[i++]) != NULL && ret == 0 )
  169.     {
  170.         SYL_puts( C_INFO, "copy %s", p );
  171.         ret = FM_fcopy( p, 0x00, FCOPY_OVERWRITE_CHECK|FCOPY_LAST_MSG_IGN, path, "" );
  172.     }
  173.  
  174.     if ( drv > 1 && ret == NORMAL )
  175.     {    /* 外部ユーティリティ(フロッピィにはインストールしない) */
  176.         ret = i = 0;
  177.         while ( (p = HewinFile2[i++]) != NULL && ret == 0 )
  178.         {
  179.             SYL_puts( C_INFO, "copy %s", p );
  180.             if ( FS_isFileExist(p) == 0 )
  181.                 continue;
  182.             ret = FM_fcopy( p, 0x00, FCOPY_OVERWRITE_CHECK|FCOPY_LAST_MSG_IGN, path, "" );
  183.         }
  184.     }
  185.  
  186.     if ( drv > 1 && ret == NORMAL )
  187.     {    /* CCI(フロッピィにはインストールしない) */
  188.         /* 複写元にカレントを移動    */
  189.         sprintf( tmp, "%sCCISRC", srcdir );
  190.         FS_chdrv( toupper(srcdir[0]) - 'A' );
  191.         FS_chdir( tmp );
  192.  
  193.         sprintf( ccipath, "%s/CCISRC", path );
  194.         if ( (ret = FS_isFileExist(tmp)) == 0 )
  195.         {
  196.             FS_mkdir(ccipath);
  197.         } else if ( ret == 1 )
  198.         {
  199.             MNU_sure( DlgX0, DlgY0,
  200.                 C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY), SELBTN_ATT_CENTER,
  201.                 "    %s    \n    インストール先に同名のファイルが存在しています。  ", ccipath );
  202.             goto _RETRY;
  203.         }
  204.         ret = i = 0;
  205.         while ( (p = HewinFile3[i++]) != NULL && ret == 0 )
  206.         {
  207.             SYL_puts( C_INFO, "copy %s", p );
  208.             ret = FM_fcopy( p, 0x00, FCOPY_OVERWRITE_CHECK|FCOPY_LAST_MSG_IGN, ccipath, "" );
  209.         }
  210.     }
  211.  
  212.     if ( ret )
  213.     {    /* error */
  214.         MNU_sure( DlgX0, DlgY0,
  215.             C_MBLACK, C_DLGBASE, COLMIX(C_ERROR,C_GRAY), SELBTN_ATT_CENTER,
  216.             "FILE COPY ERROR\n    インストールに失敗しました。  " );
  217.         return (-1);
  218.     }
  219.  
  220.     /* アイテム登録    */
  221.     SYL_puts( C_INFO, "アイテム登録" );
  222.     sprintf( ItmPath, "%c:\\tmenu.itm", drv+'A');
  223.     if ( FS_isFileExist(ItmPath) == 0 )
  224.     {    /* アイテムファイルの作成    */
  225.         ITM_CreateItemFile(ItmPath);
  226.     }
  227.     item_set_newpos( frm );
  228.  
  229.     ret = MNU_sure( DlgX0, DlgY0,
  230.         C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY), SELBTN_ATT_CENTER,
  231.         "    item file %s    \n    アイテム登録を行います。  ", ItmPath );
  232.     if ( ret == MENU_SURE_OK )
  233.     {
  234.         sprintf( tmp, "%s/%s", path, HewinFile1[0]);
  235.         FS_unix2dos( prog, tmp+2 );
  236.         FS_strupr( prog );                            /* 大文字に変換    */
  237.         ITM_AddAplItem( ItmPath, 0, 1024, "HEwin", prog, "", 2, frm );
  238.     }
  239.  
  240.     SYL_puts( C_INFO, "***** Completed *****");
  241.     DLG_tmpMsgTime( DlgX0, DlgY0,
  242.         C_MBLACK, C_DLGBASE, COLMIX(C_INFO,C_GRAY),
  243.         3, "    インストール終了しました。  " );
  244.  
  245.     return (0);
  246. }
  247.